深入解读 DoIP 协议

#Technomous #DoIP

协议简介

协议功能:

协议优势:

网络架构

Pasted image 20230418151154.png|600

车辆网络分为车内网(Vehicle network)和车外网(External network),车内网和车外网之间,有两组重要的线束,其中一组是用于数据传输的以太网线,另一组是用于诊断功能激活的激活线。以太网线就是常见的四线制 TX 标准网线。而激活线的设计,是用于车内诊断功能激活。出于能耗和电磁干扰的考虑,要求非诊断通信期间,与诊断相关的功能处于关闭状态,这样一方面可以降低能耗,另一方面减少对网络带宽的消耗,从而降低电磁干扰。

交互流程

Pasted image 20230425133735.png|600

交互流程涉及到 Actor、Client DoIP entity、Server DoIP entity 和 Vehicle non DoIP ECU 四个角色,它们之间的交互涉及到以下流程:

协议要求

报文格式

Pasted image 20230418151906.png|600

  1. 协议版本号:
版本号 含义
0x00 预留
0x01 DoIP ISO/IDS 13400-2:2010
0x02 DoIP ISO 13400-2:2012
0x03 DoIP ISO 13400-2:2019
0x04...0xFE 预留
0xFF 车辆识别请求报文默认值
  1. 版本号取反:对协议版本进行校验,确保正确的 DoIP 格式。如:协议版本 0x03,则此值为 0xFC。

  2. 负载类型:负载类型包含:节点管理类、诊断类、节点状态类和预留。

负载分类 负载类型值
节点管理类 0x0000-0x0008
诊断类 0x8001-0x8003
节点状态类 0x4001-0x4004
预留 其他

节点管理类报文包含:

负载类型值 负载类型名称 支持情况 协议
0x0000 DoIP 首部否定响应 强制 UDP/TCP
0x0001 车辆识别请求报文 强制 UDP
0x0002 带 EID 的车辆识别请求报文 可选 UDP
0x0003 带 VIN 的车辆识别请求报文 强制 UDP
0x0004 车辆声明报文/车辆识别响应报文 强制 UDP
0x0005 路由激活请求报文 强制 TCP
0x0006 路由激活响应报文 强制 TCP
0x0007 在线检查请求报文 强制 TCP
0x0008 在线检查响应报文 强制 TCP

诊断类报文包含:

负载类型值 负载类型名称 支持情况 协议
0x8001 诊断报文 强制 TCP
0x8002 诊断报文肯定应答 强制 TCP
0x8003 诊断报文否定应答 强制 TCP

节点状态类包含:

负载类型值 负载类型名称 支持情况 协议
0x4001 DoIP 实体状态请求报文 可选 UDP
0x4002 DoIP 实体状态响应报文 可选 UDP
0x4003 诊断电源模式请求报文 强制 UDP
0x4004 诊断电源模式响应报文 强制 UDP
  1. 负载长度:DoIP 的数据部分长度。

模块功能

Socket Adapter

SoAd 层作为协议适配层,主要实现以下功能:

DoIP Server

Server 端作为协议响应端,主要实现以下功能:

DoIP Client

Client 作为协议请求端,主要实现以下功能:

DoIP Gateway

Gateway 的功能需要从两个方面去分析:

Pasted image 20230421150529.png|500

在传统的总线系统下,对 ECU 的寻址是通过逻辑 DoIP 地址,此时 Gateway 需要保存地址映射表并转发 UDS 报文。

由于以太网的高带宽,需要支持 ECU 的并行刷新。

Pasted image 20230421152337.png|500

目前 ISO 13400 并没有明确指定但是目前有两种实现模式:

  1. Transparent switch
    诊断仪直接连接到车内的以太网 ECUs进行通信。

  2. Locked switch(e.g. via VLAN encapsulation)
    这种场景下诊断仪是没有权限直接连接到车内的以太网 ECUs,诊断仪的通信需要通过中央网关模拟诊断仪进行中间转发。此时的转发也可以根据实际需求对相应的流程进行精简,不同的策略转发效率也各不相同。

![[Fast_Vehicle_Diagnostics_with_DoIP.pdf]]